{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1 align=\"center\"> Linear Regression Python Tutorial </h1>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.linear_model import LinearRegression\n",
    "%pylab inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>82.583220</td>\n",
       "      <td>134.907414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>73.922466</td>\n",
       "      <td>134.085180</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>34.887445</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           x           y\n",
       "0  82.583220  134.907414\n",
       "1  73.922466  134.085180\n",
       "2  34.887445         NaN"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "raw_data = pd.read_csv(\"linear.csv\") #any dataset will work. You can get the data from my github\n",
    "# https://github.com/mGalarnyk/Python_Tutorials/blob/master/Python_Basics/Linear_Regression/linear.csv\n",
    "raw_data.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) Preprocess the data to remove any points with a missing y value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>82.583220</td>\n",
       "      <td>134.907414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>73.922466</td>\n",
       "      <td>134.085180</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>61.839983</td>\n",
       "      <td>114.530638</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           x           y\n",
       "0  82.583220  134.907414\n",
       "1  73.922466  134.085180\n",
       "3  61.839983  114.530638"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filtered_data = raw_data[~np.isnan(raw_data[\"y\"])] #removes rows with NaN in them\n",
    "filtered_data.head(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2) Fit a linear regression model using sklearn's LinearRegression package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "formula: y = [ 1.5831968]x + [ 4.4701969]\n"
     ]
    }
   ],
   "source": [
    "npMatrix = np.matrix(filtered_data)\n",
    "X, Y = npMatrix[:,0], npMatrix[:,1]\n",
    "mdl = LinearRegression().fit(X,Y) # either this or the next line\n",
    "#mdl = LinearRegression().fit(filtered_data[['x']],filtered_data.y)\n",
    "m = mdl.coef_[0]\n",
    "b = mdl.intercept_\n",
    "print \"formula: y = {0}x + {1}\".format(m, b) # following slope intercept form "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAWNmZmaV818z60J4h+oYxAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117f14990>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X,Y, color='blue')\n",
    "plt.plot([0,100],[b,m*100+b],'r')\n",
    "plt.title('Linear Regression Example', fontsize = 20)\n",
    "plt.xlabel('X', fontsize = 15)\n",
    "plt.ylabel('Y', fontsize = 15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# official documentation \n",
    "<a href=\"http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html\">http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html </a> "
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
